This invention relates generally to performing data operations in a computer system, and more particularly to performing data operations in a computer system after a failed data operation.
As it is known in the art, computer systems typically include one or more devices used for storing data as processed in a computer system. Disk storage is one such typical storage device.
Data stored on devices such as disks may be corrupted or destroyed. Therefore, systems have been developed that create multiple copies of stored data usually on separate storage devices so that if the data on one of the storage devices is damaged, it can easily be recovered from one or more of the other remaining copies. One technique using the multiple copies of data as previously described is commonly known as a shadow set. In a shadow set, data that is stored in a particular block on one member of a shadow set is the same as data stored in a corresponding block on the other one or more members of the shadow set. The process of maintaining multiple members of a shadow set is often referred to as device shadowing or mirroring. Mirroring may be employed when performing a data operation, such as a write operation of data to a disk storage location. A computer system which performs mirroring typically maintains multiple copies of data in which each copy is stored on a separate storage device. Additionally, the members of the shadow set are typically accessed as a single device from which data is read and written.
A computer system may include a plurality of host processors or central processing units (CPUs) which are simultaneously permitted to access the shadow set for read and write data requests (i.e., I/O requests). In such a computer system, the mirroring operation is performed by each CPU in the computer system. Data operations typically performed by a CPU include read and write operations. When one of the CPUs in the computer system wants to write to one of the members of the shadow set, the CPU writes to all members of the shadow set. In other words, when the CPU writes data to the logical device associated with a shadow set, all copies of the data associated with the shadow set and the logical device are updated. When a CPU wants to read data from a logical device associated with a shadow set, the CPU reads data from any member of the shadow set. A CPU performing a read operation from a logical device associated with a shadow set may read from any member of the shadow set due to the multiple copies of the data.
Problems are typically encountered when one of the host computers in the computer system fails to complete a data operation. For example, a host computer may have been performing a write operation to the shadow set and the host computer failed to complete the write operation. In this situation, the host computer has an outstanding write operation. It is a problem for the shadow set in that the data consistency among members of the shadow set is unknown. For example, when performing a write operation, a host computer executing machine instructions writes to all members of the shadow set. If there are three members in the shadow set, the host computer may have performed a write operation to only one member of the shadow set. However, at the time of the failure, the data within a shadow set is not known to be consistent. It is unknown to other host computers in the computer system accessing the shadow set what the state of the data is on the various members of the shadow set devices. For example, subsequent reads from different members of the shadow set may not return consistent (i.e., the same) values. Thus, each host computer in the computer system using the shadow set is affected by this problem of data inconsistency when there is a failed data operation caused by another host computer.
Upon a failed data operation by a host computer in the computer system, other hosts in the computer system typically require continued access to data within the shadow set. In one solution, the host computers may operate in a special mode. In this special mode, write operations continue to be performed, as previously described, such that a write is performed to all members of the shadow set. However, the behavior for a read operation is modified. One existing technique for handling subsequent read operations is the read/write technique in which data is read from any member of the shadow set and then subsequently written to all other members of the shadow set. One drawback with this alternative is the negative impact upon performance in the computer system. In particular, additional write operations are performed for each read operation. Usually, performing a write operation for a shadow set involves performing shadow set member locking operations that require computer resource locking as well as additional computer processing time. Typically, locking operations provide mutually exclusive access to shared resources, such as the shadow set which may be used by multiple hosts. The shadow set locking operations performed by one host blocks data operations of other host systems in order to synchronize access to the shadow set to ensure data consistency within the shadow set. The locking operations are typically accomplished with some interhost communication which is usually expensive due to the associated processing time and resources.
A second alternative technique is a "read, compare and write" technique in which a copy of data is read from any member of the shadow set. The copy read from one member of the shadow set is compared to other data stored on other members of the shadow set at the same location. If there is a data inconsistency among any of the copies of data stored on the various members of the shadow set, a write operation is performed by subsequently writing a copy of the data previously read from one member of the shadow set to other members of the shadow set which differed. This has a benefit of only initiating a shadow set member lock in a write operation when a difference has been detected. However, system performance is still negatively impacted by the compare and write operations. Operations, such as the write operation, are typically costly due to device access times required to perform these operations.
In addition to handling subsequent read and write operations, the shadow set must be returned to a consistent data state. In other words, it is necessary to re-establish the general precondition that multiple copies of the same data exist on members of the shadow set. The foregoing solutions handle data operations subsequent to a host system failure, but do not verify the entire shadow set as having consistent data.
One technique used to re-establish this data consistency among members of the shadow set includes performing a merge operation while simultaneously handling subsequent read and write operations to members of the shadow set. The merge operation is typically performed as a merge process in the computer system executing on one or more host computers in the computer system. One existing technique for performing the merge operation includes sequential verification of each logical component of each member of the shadow set. In other words, if each member of the shadow set is associated with a disk device organized by logical blocks, the merge operation verifies data consistency between each corresponding logical block on each associated disk of the shadow set.
One technique used to perform the data consistency operation is to use the read/write technique previously described for use with subsequent read operations. Using this technique, the merge process simply reads a copy from one member of the shadow set and subsequently locks and writes a copy of this data to other members of the shadow set. Alternatively, the merge process may use the "read, compare and write" technique, as previously described in conjunction with subsequent read operations. Using this technique, the merge process sequentially reads each logical portion of data from one member of the shadow set, and compares the data to other members of the shadow set. Upon detection of a data difference or inconsistency among shadow set members, a copy of the data previously read from the first member of the shadow set is subsequently written to the other members of the shadow set.
As a result, existing techniques used for the merge operation experience the same negative drawbacks and problems as described in conjunction with performing subsequent read operations upon detection of the failure of a host computer in the computer system.
Thus, there is required an efficient technique for performing subsequent data operations and reestablishing data consistency for a shadow set upon detection of a failure of a host computer in a computer system which minimizes performance problems and computer resource problems as those experienced in existing techniques.